package org.xxpay.apibase.service;

import com.alibaba.fastjson.JSONObject;
import org.xxpay.apibase.vo.ApiPayOrder;
import org.xxpay.apibase.vo.api.AbstractRes;
import org.xxpay.apibase.vo.api.msg.QueryRetMsg;

public interface IDCPaymentService {

    /*
     * 功能描述: 【第一步】
     * 重新生成payOrderId (如果返回为null, 则使用系统生成的订单号 )
     * 如果上游通道对订单ID格式有特殊要求
     * 那么实现该接口按照上游通道ID格式生成
     *
     * @param apiPayOrder
     * @Return: java.lang.String
     * @Author: xxpay
     */
    String regenPayOrderId(ApiPayOrder apiPayOrder, JSONObject payParamJSON);

    /*
     * 功能描述:【第二步】
     * 重新计算订单金额 (如果返回为null, 则使用默认金额 )
     *
     * @param apiPayOrder
     * @Return: java.lang.Long
     * @Author: xxpay
     */
    Long recalculatePayOrderAmount(ApiPayOrder apiPayOrder, JSONObject payParamJSON);


    /*
     * 功能描述: 【第三步】
     * 调起支付接口
     *
     * @param apiPayOrder  订单表数据
     * @param payParamJSON 支付参数: 配置的通道参数， 比如 reqHost等参数
     * @param sysConfigJSON 系统配置参数，如当前系统地址， 回调地址等
     * @Return: org.xxpay.apibase.vo.api.AbstractRes
     * @Author: xxpay
     */
    AbstractRes pay(ApiPayOrder apiPayOrder, JSONObject payParamJSON, JSONObject sysConfigJSON);


    /*
     * 功能描述: 查询订单状态接口
     *
     * @param apiPayOrder  订单表数据
     * @param payParamJSON 支付参数: 配置的通道参数， 比如 reqHost等参数
     * @Return: org.xxpay.apibase.vo.api.msg.QueryRetMsg
     * @Author: xxpay
     */
    QueryRetMsg query(ApiPayOrder apiPayOrder, JSONObject payParamJSON);


}
